using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEditor;
using UnityEngine;


namespace HotUpdate.Editor
{
    public partial class ABTools
    {
        /// <summary>
        /// 将选中文件移动到StreamingAssets目录中。
        /// </summary>
        // [MenuItem("AB包工具/移动选中文件到StreamingAssets目录")]
        private void MoveABToStreamingAssets()
        {
            // 通过编辑器Selection类中的方法 获取再Project窗口中选中的资源 
            Object[] selectedAsset = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);

            // 如果一个资源都没有选择 就没有必要处理后面的逻辑了
            if (selectedAsset.Length == 0)
                return;

            // 用于拼接本地默认AB包资源信息的字符串
            StringBuilder abCompareInfo = new StringBuilder();

            foreach (Object asset in selectedAsset)
            {
                // 通过Assetdatabase类 获取 资源的路径
                string assetPath = AssetDatabase.GetAssetPath(asset);

                // 截取路径当中的文件名 用于作为 StreamingAssets中的文件名
                string fileName = assetPath.Substring(assetPath.LastIndexOf('/'));

                // 判断是否有.符号 如果有 证明有后缀 不处理
                if (fileName.IndexOf('.') != -1)
                    continue;

                // 利用AssetDatabase中的API 将选中文件 复制到目标路径
                AssetDatabase.CopyAsset(assetPath, "Assets/StreamingAssets" + fileName);

                // 获取拷贝到StreamingAssets文件夹中的文件的全部信息
                FileInfo fileInfo = new FileInfo(Application.streamingAssetsPath + fileName);
                // 拼接AB包信息到字符串中
                abCompareInfo.Append(fileInfo.Name);
                abCompareInfo.Append(" ");
                abCompareInfo.Append(fileInfo.Length);
                abCompareInfo.Append(" ");
                abCompareInfo.Append(GetMD5(fileInfo.FullName));
                abCompareInfo.Append(",");
            }

            abCompareInfo.Remove(abCompareInfo.Length - 1, 1);

            // 将本地默认资源的对比信息 存入文件
            File.WriteAllText(Path.Combine(Application.streamingAssetsPath, CompareFilefullName),
                abCompareInfo.ToString());

            // 刷新窗口
            AssetDatabase.Refresh();
        }
    }
}